package it.azienda.moretti.view;

import it.azienda.framework.utilita.Utilita;
import it.azienda.framework.view.Dettaglio;
import it.azienda.framework.persistenza.DAOConnectionSingleton;
import it.azienda.moretti.modello.BeanFasciaEta;
import it.azienda.moretti.modello.BeanUtente;
import java.util.ArrayList;
import java.util.HashMap;
import javax.faces.application.FacesMessage;
import javax.faces.component.html.HtmlForm;
import javax.faces.component.html.HtmlSelectOneMenu;
import javax.faces.context.FacesContext;
import javax.faces.event.ValueChangeEvent;
import org.apache.myfaces.component.html.ext.HtmlInputText;
import org.hibernate.Query;
import org.hibernate.Session;

public class DettaglioFasciaEta extends Dettaglio{
    
    private HtmlForm form = new HtmlForm();
    private BeanFasciaEta beanFasciaEta;
    
    public void setBeanFasciaEta(BeanFasciaEta beanFasciaEta) {
        setObj(beanFasciaEta);
        this.beanFasciaEta = beanFasciaEta;
    }
    
    public BeanFasciaEta getBeanFasciaEta(){
        return (BeanFasciaEta)getObj();
    }
    
    public HtmlForm getForm() {
        form = (HtmlForm) Utilita.getSession().getAttribute("form");
        if (form == null) {
            form = new HtmlForm();
        }
        Utilita.getSession().removeAttribute("form");
        return form;
    }
    
    public void setForm(HtmlForm form) {
        setFormObject(form);
        this.form = form;
        Utilita.getSession().setAttribute("form",form);
    }
    
    public void controllo(ValueChangeEvent event){
        if(event.getNewValue()!=event.getOldValue()){
            FacesContext ctx = FacesContext.getCurrentInstance();
            HtmlSelectOneMenu selectOneMenu=(HtmlSelectOneMenu) form.findComponent("lista");
            Utilita.getSession().removeAttribute("form");
            String valoreSelect=(String)selectOneMenu.getValue();
            BeanFasciaEta regione=new BeanFasciaEta();
            if(!valoreSelect.equals("")){
                try{
                    regione=(BeanFasciaEta)regione.dettaglio(new Integer(valoreSelect));
                }catch(Exception e){
                    e.printStackTrace();
                    System.out.println("Errore"+e);
                }
                if(regione!=null){
                    BeanUtente login= (BeanUtente) Utilita.getSession().getAttribute("login");
                    HashMap listaOggetti=login.getListaOggetti();
                    for(int i=0;i<listaOggetti.size();i++){
                        BeanFasciaEta regione2=(BeanFasciaEta) listaOggetti.get(new Integer(i));
                        if(regione2.getId().intValue()==regione.getId().intValue()){
                            Utilita.getSession().removeAttribute("posizioneOggetto");
                            Utilita.getSession().setAttribute("posizioneOggetto",new Integer(i));
                        }
                    }
                    this.beanFasciaEta=regione;
                    caricaOggetto(regione);
                }else{
                    FacesContext.getCurrentInstance().addMessage(null,new FacesMessage("Nessun record presente."));
                }
            }
            Utilita.getRequest().setAttribute("beanFasciaEta",regione);
            ctx.renderResponse();
        }
    }
    
    public void caricaOggetto(BeanFasciaEta regione){
        if(regione.getCodice()!=null){
            ((HtmlInputText) form.findComponent("codice")).setValue(regione.getCodice());
        }else{
            ((HtmlInputText) form.findComponent("codice")).setValue("");
        }
        if(regione.getDescrizione()!=null){
            ((HtmlInputText) form.findComponent("descrizione")).setSubmittedValue(regione.getDescrizione());
        }else{
            ((HtmlInputText) form.findComponent("descrizione")).setValue("");
        }
    }
    
    public boolean controlliPrimaSalvataggio() {
        FacesContext ctx = FacesContext.getCurrentInstance();
        beanFasciaEta =(BeanFasciaEta) ctx.getExternalContext().getRequestMap().get("beanFasciaEta");
        boolean errori = false;
        
        if(beanFasciaEta.getCodice() == null){
            String query=" select max(regione.codice) from BeanFasciaEta regione";
            Session session = null;
            try {
                session = DAOConnectionSingleton.newSession();
                Query q = null;
                q = session.createQuery(query);
                ArrayList listaCodice = (ArrayList) q.list();
                Integer cod=(Integer) listaCodice.get(0);
                if(cod!=null){
                    this.beanFasciaEta.setCodice(new Integer(cod.intValue()+1));
                }else{
                    this.beanFasciaEta.setCodice(new Integer(1));
                }
            } catch (Exception e) {
            }
        }
        return false;
    }
}